using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;
using WalkingTec.Mvvm.Core;
using WalkingTec.Mvvm.Core.Extensions;
using HengTong.Model.Db.SupplyChain.Purchase;
using HengTong.Model.Db.SupplyChain.Material;
using TiaoTaoHelper.Wtm.Models;


namespace HengTong.ViewModel.SupplyChain.SysPurchaseRequestBillEntryVms
{
    public partial class SysPurchaseRequestBillEntrySearcher : BaseSearcher
    {
        /// <summary>
        /// 采购申请单主表 Id
        /// </summary>
        [Display(Name = "采购申请单")]
        public Guid? BillId { get; set; }
        
        /// <summary>
        /// 采购申请单编号，用于按单号或编码搜索
        /// </summary>
        [Display(Name = "采购申请单编号")]
        public string BillCode { get; set; }
        
        /// <summary>
        /// 物料主表 Id
        /// </summary>
        [Display(Name = "物料")]
        public Guid? MaterialId { get; set; }
        
        /// <summary>
        /// 物料名称，用于显示或模糊查询
        /// </summary>
        [Display(Name = "物料名称")]
        public string MaterialName { get; set; }
        
        /// <summary>
        /// 物料编码或 SKU 编码，用于精确或模糊查询
        /// </summary>
        [Display(Name = "物料编码")]
        public string MaterialCode { get; set; }
        
        /// <summary>
        /// 物料 SKU Id
        /// </summary>
        [Display(Name = "物料 SKU")]
        public Guid? MaterialSkuId { get; set; }
        
        /// <summary>
        /// 物料 SKU 名称，用于显示或模糊查询
        /// </summary>
        [Display(Name = "物料 SKU 名称")]
        public string MaterialSkuName { get; set; }
        
        /// <summary>
        /// 物料 SKU 编码，用于精确或模糊查询
        /// </summary>
        [Display(Name = "物料 SKU 编码")]
        public string MaterialSkuCode { get; set; }
        
        /// <summary>
        /// 是否为备用物资（备品备件）
        /// </summary>
        [Display(Name = "是否备用物资")]
        public Boolean? IsBackupMaterial { get; set; }
        
        /// <summary>
        /// 要求到货日期区间，用于按到货时间范围筛选
        /// </summary>
        [Display(Name = "要求到货日期")]
        public DateRange RequiredArrivalDate { get; set; }
        
        /// <summary>
        /// 采购进度（枚举），用于按进度筛选
        /// </summary>
        [Display(Name = "采购进度")]
        public PurchaseProgress? PurchaseProgress { get; set; }
        
        [Display(Name = "申请人")]
        public String Applicant { get; set; }
        [Display(Name = "申请日期")]
        public DateRange RequestDate { get; set; }
        [Display(Name = "需求日期")]
        public DateRange NeedDate { get; set; }
        [Display(Name = "采购类型")]
        public PurchaseType? PurchaseType { get; set; }
        [Display(Name = "物料类型")]
        public MaterialType? MaterialType { get; set; }
        
        [Display(Name = "紧急程度")]
        public UrgencyLevel? UrgencyLevel { get; set; }
        [Display(Name = "审批人")]
        public String Approver { get; set; }
        [Display(Name = "审批时间")]
        public DateRange ApprovalTime { get; set; }
        [Display(Name = "所属部门")]
        public Guid? GroupId { get; set; }
        [Display(Name = "所属机构")]
        public Guid? OrgId { get; set; }
        [Display(Name = "单据状态")]
        public BillStatus? BillStatus { get; set; }
        [Display(Name = "工作流状态")]
        public WorkflowStatus? WorkflowStatus { get; set; }
        [Display(Name = "备注")]
        public String Remark { get; set; }

        protected override void InitVM()
        {
        }

    }
}
